Implementing or deploying a new software, hardware, communications, or other type of electronic system may comprise a transition phase during which one or more legacy systems and one or more new systems are concurrently, simultaneously, or in parallel. A pair of systems may also be run concurrently, simultaneously, or in parallel for other reasons, such as when comparing the accuracy of two or more systems or when measuring relative efficiency of systems that comprise different methods.
It may be necessary in such cases to ensure that the systems are monitored by a synchronization means that may perform functions like resolving differences between a pair of data models that each represent one or more data structures (each of which comprise one or more logical data elements) comprised by one of the systems, resolving inconsistencies between each system's repository of production data, or ensuring that, when fed identical or analogous input, a component of a first system and an analogous component of a second system correctly produce identical, similar, or analogous output.
A synchronization means may comprise a mechanism by which a monitoring entity detects a revision to production data stored by a first system or detects a revision to a data model or other data structure that represents an organization of the production data. This monitoring entity may be a hardware or software component of one of the systems being synchronized or it may be a distinct “intermediary” hardware or software entity.
Such a monitoring entity may respond to a detection of a first revision or set of revisions to a first system by making a second revision or set of revisions to a second system, in order to synchronize an operation, a data model, or an element of production data of the first system with an operation, a data model, or an element of production data of the second system.
In some cases, the monitoring entity may determine how to perform the second revision or set of revisions by referring to instructions described by one or more synchronization rules, wherein each rule describes how to respond to a particular type of revision. In this document, we may refer to an act of performing a set of instructions described by a synchronization rule as an act of “firing” the rule.
A synchronization rule may, for example, instruct the monitoring entity to respond to an update of a data model of a first system by performing an analogous update to a data model of a second system. Another rule may instruct the monitoring entity to respond to a user's entry of data into a database of the first system by updating an analogous database of the second system.
In some cases, a simple “mapping” rule may perform a mapping function that identifies which data elements of the second system correspond to analogous elements of the first system. But in other cases, a more complex “transform” rule may describe a multi-instruction logical procedure, algorithm, or data transformation necessary to perform more nuanced synchronization tasks.
Every time a system component or an element of stored data is added, removed, updated, or otherwise modified, the mechanism must be able to quickly identify the rules needed to respond to the modification. In many cases, the synchronization must be able to operate bidirectionally, in order to both respond to a revision to a first system by resynchronizing the second system; and to respond to a revision to the second system by resynchronizing the first system. In other cases, the synchronization mechanism may need to augment a synchronization procedure by identifying and retrieving additional, unmodified, data items from one of the systems or from external third-party repositories.
In real-world implementations, where such a synchronization mechanism system may comprise very large numbers of rules, the tasks of identifying and performing synchronization procedures may thus be prohibitively resource-intensive and prone to error.